/**
 ********************************************************************************
 *
 *文件名称：
 *
 *文件日期：
 *
 *文件描述：
 *
 *文件版本：
 *
 *修改历史：
 *
 ********************************************************************************
 ***/

/*******************************	头文件包含区	**********************************/
#include "init_config.h"

/******************************* 全局变量定义区 **********************************/
uint16_t timer_ms = 0;
uint16_t timer_ms_wireless = 0;

void Timer_delay(void)
{
}

/**
 *********************************************************************************
 *
 *函数名称：
 *
 *函数参数：无
 *
 *函数返回值：无
 *
 *功能描述：
 *
 *********************************************************************************
 **/
void delay_us(uint16_t us)
{
}
/**
 *********************************************************************************
 *
 *函数名称：
 *
 *函数参数：无
 *
 *函数返回值：无
 *
 *功能描述：
 *
 *********************************************************************************
 **/
void delay_ms(volatile uint16_t ms)
{
	systick.delay_10ms = 0;
	while (systick.delay_10ms < ms)
	{
		WDT->EN = 0xbb;
	}
}
/**
 *********************************************************************************
 *
 *函数名称：
 *
 *函数参数：无
 *
 *函数返回值：无
 *
 *功能描述：
 *
 *********************************************************************************
 **/
void delay_s(uint16_t s)
{
}
void light_sw_init(void);
/**
 *********************************************************************************
 *
 *函数名称：sys_init
 *
 *函数参数：无
 *
 *函数返回值：无
 *
 *功能描述：系统初始化函数
 *
 *********************************************************************************
 **/
void sys_init(void)
{
	__disable_irq(); //关中断
	syscfg();		 //系统时钟配置，滴答定时器配置
	__enable_irq();	 //开中断

	sys_gpioInit();				 // GPIO配置
	uart_init(USART_BPS_115200); //串口配置，串口0位PC串口，串口1为模组通信串口
	fnRTCDrive_Init();			 // RTC时间配置
	tim_init();					 // TIMER定时器配置
	sensor_init();				 //计量配置

	/*之所以boot区超时次数10，而这里超时次数200，是为了规避以下情况*/
	/*假设后期一不小心修改了reg结构体大小（增删结构体变量），并将修改后的程序*/
	/*用于现场升级，当这个程序升级成功之后就会出现一个问题：*/
	/*boot区reg大小和app区reg大小不一致，导致在boot区读参数时crc失败进而执行参数初始化操作，*/
	/*并保存参数，然后跳转到app区，因为新的app区程序reg大小不一致，所以到*/
	/*app区之后读参数也会crc校验失败，然后执行参数初始化操作*/
	/*假设用户*/
	data_flash_read(200); //读取参数
	restart_init();
	device_info.e1 = swapUint32_t(reg.R.e1);
	set_light_Lamps1(100);
	delay_ms(20);
	LAMP1_SET;

	reg.R.software_version = 11000;

	memset(&reg.R.hardware_version, 0, sizeof(reg.R.hardware_version));

	reg.R.software_version += 8;
	
	sprintf((char *)reg.R.hardware_version, "%s", "EXC-TL1-800E-MOSO-II");
	
	PRINT_VERSION; // PC串口日志打印
	logEN = 1;
	swapUint16_t_Plus((u16 *)reg.R.hardware_version, sizeof(reg.R.hardware_version) / 2);
	my_cmd_init();
	light_sw_init();
}



